;********************************************************
;
;            CW Code Program Select
;
;                                 Author : Pete Juliano
;				  November 2004
;********************************************************

        list            p=pic16f84
        include         p16f84.inc
        __config 		3FF9
        errorlevel      -302    ;Eliminate bank warning

;****************  Label Definition  ********************
LED		equ		05
status 		equ		H'0003'
rp0		equ		H'0005'

ra0     	equ     0x00    ;RA0 MSG1 SELECT
ra1     	equ     0x01    ;RA1 MSG2 SELECT
ra2     	equ     0x02    ;RA2 MSG3 SELECT
ra3		equ	0x03    ;RA3 MSG4 SELECT


PORTA	equ		H'0005'
PORTB	equ		H'0006'

TRISA	equ		H'0085'
TRISB	equ		H'0086'



COUNT1	equ		11
COUNT2	equ		12
COUNT3  equ		13


;****************  Program Start  ***********************
        org     0               ;Reset Vector
        goto    init
        org     4               ;Interrupt Vector
        goto    init



;*******************************DOT Generator / DOT:DASH Spacing*****************************
D	
		MOVLW	.45		; DOT Timing and DOT/DASH Spacing
		MOVWF	COUNT1
L1		MOVLW	.12
		MOVWF	COUNT2
L2		MOVLW	.60
		MOVWF	COUNT3
L3		DECFSZ	COUNT3,1
		GOTO	L3
		DECFSZ	COUNT2,1
		GOTO	L2
		DECFSZ	COUNT1,1
		GOTO	L1
		MOVLW	.150
		MOVWF	COUNT1
LP98		DECFSZ	COUNT1,1
		GOTO	LP98
		NOP
		RETLW	0
;****************************DASH Generator / Letter Spacing*********************
D1	
		MOVLW	.90		; DASH Timing and Letter Spacing
		MOVWF	COUNT1
L4		MOVLW	.18
		MOVWF	COUNT2
L5		MOVLW	.60
		MOVWF	COUNT3
L6		DECFSZ	COUNT3,1
		GOTO	L6
		DECFSZ	COUNT2,1
		GOTO	L5
		DECFSZ	COUNT1,1
		GOTO	L4
		MOVLW	.150
		MOVWF	COUNT1
LP99		DECFSZ	COUNT1,1
		GOTO	LP99
		NOP
		RETLW	0

;**********************************************************************
BREAK
	CALL	DASH			; -...-
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DASH

	CALL	D1

	RETURN
;**********************************************************************
COMMA

	CALL 	DASH			;--..--
	CALL	D
	CALL 	DASH
	CALL	D
	CALL 	DOT
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DASH
	CALL	D
	CALL	DASH
	CALL	D1

	RETURN
;******************************************************************************
DOT

	BSF		PORTB,LED
	CALL		D				;	DOT
	BCF		PORTB,LED

	RETURN
;*****************************************************************************
DASH

	BSF		PORTB,LED
	CALL		D1				;	DASH
	BCF		PORTB,LED

	
	RETURN     


;****************  Initial Process  *********************
      
      
init    bsf     STATUS,RP0      ;Change to Bank1 
        movwf   TRISA           ;Set PORTA to Input mode
        clrf    TRISB           ;Set PORTB to Output mode
        bcf     STATUS,RP0      ;Change to Bank0
		bcf		PORTB,LED

;****************  Switch Scan Process  ********************
switch  btfss   PORTA,ra0       ;RA0 ON(Low level) ?
        call    MSG1          	;Yes. Call MSG One
        btfss   PORTA,ra1       ;RA1 ON ?
        call    MSG2          	;Yes. Call Msg Two
        btfss   PORTA,ra3       ;RA3 ON ? 
        call    MSG3         	;Yes. Call MSG Three
        goto    switch          ;Retry
		
        

;************************************************************************************
MSG1			; CQ DE W6JFR

	BSF		3,5
	MOVLW		0x00
	MOVWF		PORTB
	BCF		3,5


	CALL	D1

	CALL	DASH			;C
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DASH
	CALL	D
	CALL	DOT

	CALL	D1

	CALL	DASH	 		;Q
	CALL	D
	CALL	DASH
	CALL	D
	CALL	DOT	
	CALL	D
	CALL	DASH

	CALL	D1


	CALL	DASH			;C
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DASH
	CALL	D
	CALL	DOT

	CALL	D1

	CALL	DASH	 		;Q
	CALL	D
	CALL	DASH
	CALL	D
	CALL	DOT	
	CALL	D
	CALL	DASH

	CALL	D1
	CALL	D1

	CALL	DASH			;D
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DOT

	CALL	D1

	CALL	DOT			;E
	
	CALL	D1
	CALL	D1


	CALL	DOT			;W
	CALL	D
	CALL	DASH
	CALL	D
	CALL	DASH

	CALL	D1

	CALL	DASH			;6
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DOT

	CALL	D1

	CALL	DOT			;J
	CALL	D
	CALL	DASH
	CALL	D
	CALL	DASH
	CALL	D
	CALL	DASH

	CALL	D1

	CALL	DOT			;F
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DASH
	CALL	D
	CALL	DOT

	CALL	D1

	CALL	DOT			;R
	CALL	D
	CALL	DASH
	CALL	D
	CALL	DOT

	CALL	D1
	CALL	D1


	CALL	DASH			;K
	CALL	D
	CALL	DOT
	CALL	D
	CALL 	DASH


	RETURN

	
;***********************************************************************************
MSG2					;TNX OM COMMA UR RST 579 579 COMMA NAME PETE PETE COMMA QTH NR SEATTLE BACK
	BSF	3,5
	MOVLW	0x00
	MOVWF	PORTB
	BCF	3,5

	CALL	D1
	CALL	D1

	CALL	DASH			;T

	CALL	D1

	CALL	DASH			;N
	CALL	D
	CALL	DOT	

	CALL	D1

	CALL	DASH			;X
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DASH

	CALL	D1
	CALL	D1

	CALL	DASH			;O
	CALL	D	
	CALL	DASH
	CALL	D	
	CALL	DASH

	CALL 	D1

	CALL	DASH			;M
	CALL 	D
	CALL	DASH

	CALL	D1

	CALL	COMMA

	CALL	D1
	CALL	D1

	CALL	DOT			;U
	CALL	D
	CALL 	DOT
	CALL	D
	CALL	DASH

	CALL	D1

	CALL	DOT			;R
	CALL	D
	CALL	DASH
	CALL	D
	CALL	DOT

	CALL	D1
	CALL	D1

	CALL	DOT			;R
	CALL	D
	CALL	DASH
	CALL	D
	CALL	DOT

	CALL	D1

	CALL	DOT			;S
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DOT

	CALL	D1

	CALL	DASH			;T

	CALL	D1
	CALL	D1

	CALL	DOT			;I
	CALL	D
	CALL	DOT

	CALL	D1

	CALL	DOT			;S
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DOT

	CALL	D1
	CALL	D1


	CALL	DOT			;5
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DOT

	CALL	D1
	
	CALL	DASH			;7
	CALL	D
	CALL	DASH
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DOT

	CALL	D1


	CALL	DASH			;9
	CALL	D
	CALL	DASH
	CALL	D
	CALL	DASH
	CALL	D
	CALL	DASH
	CALL	D
	CALL	DOT

	CALL	D1
	CALL	D1
	

	CALL	DOT			;5
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DOT

	CALL	D1
	
	CALL	DASH			;7
	CALL	D
	CALL	DASH
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DOT

	CALL	D1


	CALL	DASH			;9
	CALL	D
	CALL	DASH
	CALL	D
	CALL	DASH
	CALL	D
	CALL	DASH
	CALL	D
	CALL	DOT

	CALL	D1
	CALL	D1

	
	CALL	DASH			;N
	CALL	D
	CALL	DOT

	CALL	D1

	CALL	DOT			;A
	CALL	D
	CALL	DASH

	CALL	D1

	CALL	DASH			;M
	CALL 	D
	CALL	DASH

	CALL	D1

	CALL	DOT			;E

	CALL	D1
	CALL	D1

	CALL	BREAK

	CALL	DOT			;P
	CALL	D
	CALL	DASH
	CALL	D
	CALL	DASH
	CALL	D
	CALL	DOT

	CALL	D1

	CALL 	DOT			;E
	
	CALL	D1

	CALL	DASH			;T

	CALL	D1

	CALL	DOT			;E

	CALL	D1

	CALL	D1
	CALL	D1

	CALL	DOT			;P
	CALL	D
	CALL	DASH
	CALL	D
	CALL	DASH
	CALL	D
	CALL	DOT

	CALL	D1

	CALL 	DOT			;E
	
	CALL	D1

	CALL	DASH			;T

	CALL	D1

	CALL	DOT			;E

	CALL	D1


	CALL	COMMA

	CALL	DASH			;Q
	CALL	D
	CALL	DASH
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DASH

	CALL	D1

	CALL	DASH			;T

	CALL	D1
 	

	CALL	DOT			;H
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DOT
	
	CALL	D1
	CALL	D1

	CALL	DASH			;N
	CALL	D
	CALL	DOT

	CALL	D1

	CALL	DOT			;R
	CALL	D
	CALL	DASH
	CALL	D	
	CALL	DOT

	CALL	D1
	CALL	D1

	CALL	DOT			;S
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DOT

	CALL	D1

	CALL	DOT			;E

	CALL	D1

	CALL	DOT			;A
	CALL	D
	CALL	DASH

	CALL	D1

	CALL	DASH			;T

	CALL	D1

	CALL	DASH			;T

	CALL	D1

	CALL	DOT			;L
	CALL	D
	CALL	DASH
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DOT

	CALL	D1

	CALL	DOT			;E

	CALL	D1
	CALL	D1

	CALL	DOT			;S
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DOT

	CALL	D1

	CALL	DOT			;E

	CALL	D1

	CALL	DOT			;A
	CALL	D
	CALL	DASH

	CALL	D1

	CALL	DASH			;T

	CALL	D1

	CALL	DASH			;T

	CALL	D1

	CALL	DOT			;L
	CALL	D
	CALL	DASH
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DOT

	CALL	D1

	CALL	DOT			;E

	CALL	D1
	CALL	D1

	CALL	DASH			;B
	CALL	D
	CALL	DOT	
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DOT
	
	CALL	D1

	CALL	DOT			;A
	CALL	D
	CALL	DASH

	CALL	D1

	CALL	DASH			;C
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DASH
	CALL	D
	CALL	DOT

	CALL	D1

	CALL	DASH			;K
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DASH

	CALL	D1

	RETURN



	

;*************Rig is Homebrew XCVR 20W ANT Wire Back***************************

MSG3

	BSF		3,5
	MOVLW	0x00
	MOVWF	PORTB
	BCF		3,5


	CALL	D1
	CALL	D1

	CALL	DOT			;R
	CALL	D	
	CALL	DASH
	CALL	D
	CALL	DOT

	CALL	D1

	CALL	DOT			;I
	CALL	D
	CALL	DOT

	CALL	D1

	CALL	DASH			;G
	CALL	D
	CALL	DASH
	CALL	D
	CALL	DOT

	CALL	D1
	CALL	D1

	CALL	DOT			;I
	CALL	D
	CALL	DOT
	
	CALL	D1

	CALL	DOT			;S
	CALL	D
	CALL	DOT
	CALL	D	
	CALL	DOT

	CALL	D1
	CALL	D1

	CALL	DOT			;H
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DOT

	CALL	D1

	CALL	DASH			;O
	CALL	D
	CALL	DASH
	CALL	D
	CALL	DASH

	CALL	D1

	CALL	DASH			;M
	CALL	D
	CALL	DASH

	CALL	D1

	CALL	DOT			;E

	CALL	D1

	CALL	DASH			;B
	CALL	D
	CALL	DOT	
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DOT
	
	CALL	D1

	CALL	DOT			;R
	CALL	D	
	CALL	DASH
	CALL	D
	CALL	DOT

	CALL	D1

	CALL	DOT			;E

	CALL	D1
		
	CALL	DOT			;W
	CALL	D
	CALL	DASH
	CALL	D
	CALL	DASH

	CALL	D1
	CALL	D1

	CALL	DASH			;X
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DASH

	CALL	D1

	CALL	DASH			;C
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DASH
	CALL	D
	CALL	DOT

	CALL	D1

	CALL	DOT			;V
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DASH

	CALL	D1

	CALL	DOT			;R
	CALL	D
	CALL	DASH
	CALL	D
	CALL	DOT

	CALL	D1
	CALL	D1

	CALL	DOT			;2
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DASH
	CALL	D
	CALL	DASH	
	CALL	D
	CALL	DASH

	CALL	D1

	CALL	DASH			;0
	CALL	D
	CALL	DASH
	CALL	D
	CALL	DASH
	CALL	D
	CALL	DASH
	CALL	D
	CALL	DASH

	CALL	D1

	CALL	DOT			;W
	CALL	D
	CALL	DASH
	CALL	D
	CALL	DASH

	CALL	D1
	CALL	D1

	CALL	DOT			;A
	CALL	D
	CALL	DASH

	CALL	D1

	CALL	DASH			;N
	CALL	D
	CALL	DOT

	CALL	D1

	CALL	DASH			;T

	CALL	D1
	CALL	D1

	CALL	DOT			;W
	CALL	D
	CALL	DASH
	CALL	D
	CALL	DASH

	CALL	D1

	CALL	DOT			;I
	CALL 	D
	CALL	DOT

	CALL	D1

	CALL	DOT			;R
	CALL	D	
	CALL	DASH
	CALL	D
	CALL	DOT

	CALL	D1

	CALL	DOT			;E

	CALL 	D1
	CALL	D1

	CALL	DASH			;B
	CALL	D
	CALL	DOT	
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DOT
	
	CALL	D1

	CALL	DOT			;A
	CALL	D
	CALL	DASH

	CALL	D1

	CALL	DASH			;C
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DASH
	CALL	D
	CALL	DOT

	CALL	D1

	CALL	DASH			;K
	CALL	D
	CALL	DOT
	CALL	D
	CALL	DASH

	CALL	D1



	RETURN
	
;************************************************************************************************

MSG4		;Not Implemented
  	
	RETURN
;*****************************************************************************************************







       END

